#include<stdio.h>
#include<string.h>
#include<iostream>
using namespace std;

//数组：按照一定格式排列起来的，具有相同类型的数据元素的集合 
//一维数组：若线性表中的数据元素为非结构的简单元素，则称为一维数组 

//线性表结构是数组结构的一个特例，数组结构是线性表结构的扩展 

//数组的基本操作：结构的初始化、销毁，取元素值，修改元素值
//1. InitArrary(&A, n, bound1, ..., boundn) //构造数组A
//2. DestoryArrary(&A)  //销毁数组A
//3. Value(A, &e, index1, ..., indexn)  //取数组元素值
//4. Assign(A, &e, index1, ..., indexn) //给数组元素赋值 

//数组的顺序存储结构 
//一维数组：elemtype arr[m][n]
//二维数组：设数组开始存储位置为LOC(0, 0), 每个元素需要L个存储单元 
//		以行序为主序： LOC(i, j) = LOC(0, 0) + (i*n + j) * L;
//		以列序为主序； LOC(i, j) = LOC(0, 0) + (j*m + i) * L;
//三维数组：按页/行/列存放，页优先的顺序存储 页:l1--u1, 行:l2--u2, 列:l3--u3
//      LOC(i1,i2,i3) = a + i1*m2*m3 + i2*m3 + i3 


//矩阵的常规存储：将矩阵描述为一个二维数组
//不适宜常规存储的矩阵：值相同的元素很多且呈某种规律分布；零元素多。
//矩阵的压缩存储：为多个相同的非零元素只分配一个存储空间；对零元素不分配空间 
//一些特殊矩阵可以压缩：对称矩阵，对角矩阵，三角矩阵，稀疏矩阵...
//对称矩阵：可以 以行序为主序将元素存放在一个一维数组 sa[n(n+1) / 2]中。 
//三角矩阵：
//对角矩阵(带状矩阵)：
//稀疏矩阵：<=0.05  三元组(i, j, aij) 唯一确定矩阵的一个非零元 
//		压缩存储原则：存各非零元的值、行列位置和矩阵的行列数 
//	   1.三元组顺序表又称有序的双下标法
//		三元组顺序表的优点：非零元在表中按行序有序存储，因此便于进行依行顺序处理的矩阵运算;  缺点：不能随机存取 
//     2.稀疏矩阵的链式存储结构：十字链表;
//		 十字链表的优点：能够灵活地插入因运算而产生的新的非零元素，删除因运算而产生的新的零元素，实现矩阵的各种运算。 
//		  十字链表的结点需要的域：row, col, value, right, down 
//					另外设两种头指针：M.chead(列头指针), M.rhead(行头指针) 
//
//
//
//
//
 
int main(void)
{
	return 0;
}